<template>
  <n-menu v-model:value="activeKey" mode="vertical" :options="menuOptions" />
</template>

<script lang="tsx">
import { h } from 'vue'
import { NIcon } from 'naive-ui'
import type { Component } from 'vue'
import {
  BookOutline as BookIcon,
  PersonOutline as PersonIcon,
  WineOutline as WineIcon
} from '@vicons/ionicons5'

function renderIcon (icon: Component) {
  return () => h(NIcon, null, { default: () => h(icon) })
}

const menuOptions = [
  {
    // label: () =>
    //   // 渲染函数：写起来麻烦，阅读困难
    //   // 推荐使用 JSX 来写
    //   h(
    //     'a',
    //     {
    //       href: 'https://baike.baidu.com/item/%E4%B8%94%E5%90%AC%E9%A3%8E%E5%90%9F',
    //       target: '_blank',
    //       rel: 'noopenner noreferrer'
    //     },
    //     '且听风吟'
    //   ),
    label: () => {
      return (
        <a
          href="https://baike.baidu.com/item/%E4%B8%94%E5%90%AC%E9%A3%8E%E5%90%9F"
          target="_blank"
          rel="noopenner noreferrer"
        >
          且听风吟
        </a>
      )
    },
    key: 'hear-the-wind-sing',
    icon: renderIcon(BookIcon)
  },
  {
    label: '1973年的弹珠玩具', // 菜单名称
    key: 'pinball-1973', // 类似于 v-for 中的 key
    icon: renderIcon(BookIcon), // 菜单图标
    disabled: true, // 是否禁用
    children: [ // 子菜单列表
      {
        label: '鼠',
        key: 'rat'
      }
    ]
  },
  {
    label: '寻羊冒险记',
    key: 'a-wild-sheep-chase',
    icon: renderIcon(BookIcon),
    disabled: true
  },
  {
    label: '舞，舞，舞',
    key: 'dance-dance-dance',
    icon: renderIcon(BookIcon),
    children: [
      {
        type: 'group',
        label: '人物',
        key: 'people',
        children: [
          {
            label: '叙事者',
            key: 'narrator',
            icon: renderIcon(PersonIcon)
          },
          {
            label: '羊男',
            key: 'sheep-man',
            icon: renderIcon(PersonIcon)
          }
        ]
      },
      {
        label: '饮品',
        key: 'beverage',
        icon: renderIcon(WineIcon),
        children: [
          {
            label: '威士忌',
            key: 'whisky'
          }
        ]
      },
      {
        label: '食物',
        key: 'food',
        children: [
          {
            label: '三明治',
            key: 'sandwich'
          }
        ]
      },
      {
        label: '过去增多，未来减少',
        key: 'the-past-increases-the-future-recedes'
      }
    ]
  }
]

export default {
  data () {
    return {
      activeKey: null,
      menuOptions
    }
  }
}
</script>
